iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
佛心分享-IT 人自學之術

C++探險家系列 第 17

Day 17 程式練習

  • 分享至 

  • xImage
  •  

練習題一(檔案設計好友名單):

#include <iostream>
#include <string.h>
#include <fstream>
#define LIST "12-3-2. txt"
using namespace std;
typedef struct friends {
string name;
string phone;
string birth;
}FRIEND;
void show (string) ;
void enter (string) ;
int main (void)
{
    char ch;
    while (1)
    {
    cout<<"請問您要 1)輸出好友名單 2)新增好友資料:";
    cin>>ch ;
    if(ch =='1')
     show (LIST) ;
    else if(ch =='2')
     enter (LIST);
}

 return 0;
 }
void show (string filename)
{
    FRIEND £;
    ifstream myfile (filename.c_str ()) ;
    if (!myfile. is_open ()) {
     cout<<"檔案開啟錯誤!";
    return :
}
while (!myfile.eof ( )) {
    myfile>>f.name>>f.phone>>f.birth;
    if(!myfile.eof ()) {
cout<<"===================="<<endl;
cout<<f. name<<"的電話:"<<f.phone<<endl;
cout<<f.name<<"的生日:"<<f.birth<<endl;
}
}
Cout<<"================"<<endl;
myfile. close () ;
}
void enter (string filename)
{
    FRIEND newfriend;
    ofstream myfile (filename.c_str (),ios:: app) ;
    cout<<"請輸入名稱:";
    cin>>newfriend.name;
    myfile<<newfriend.name<<"
    cout<<"請輸入電話號碼:";
    cin>>newfriend. phone;
    myfile<<newfriend.phone<<" " ;
    cout<<"請輸入生日:";
    cin>>newfriend.birth;
    myfile<<newfriend. birth<<endl;
    myfile. close () ;

說明:
這段程式碼管理好友名單,包含兩個功能:顯示和新增資料。show 函數讀取指定文件中的好友資料並顯示在螢幕上,enter 函數則將用戶輸入的新好友資料追加到文件中。主函數提供選擇介面,根據用戶選擇調用對應函數。
練習題二(檔案搜尋程式):

#include <iostream>
#include <fstream>
#include <cstring> 
using namespace std;

int main(void) {
    ifstream myfile("12-7-9.txt"); 
    int num = 0;
    string word, line;
    
    cout << "Enter the word to search: ";
    cin >> word;
    
    if (myfile.is_open()) {
        while (getline(myfile, line)) { 
            num++;
            size_t pos = line.find(word); 
            if (pos != string::npos){
                cout << word << " found in line " << num << ".\n";
            }
        }
        myfile.close();
    } else {
        cout << "Unable to open file.\n";
    }
    
    return 0;
}

說明:
這段程式碼從指定的文本文件中搜尋用戶輸入的單詞。程式逐行讀取文件,利用 std::string::find 方法查找單詞是否出現在每行中。如果找到該單詞,則顯示該單詞和其出現的行號。程式先檢查文件是否成功打開,並在結束後關閉文件。如果文件無法打開,則輸出錯誤信息。
練習題三(檔案選擇性輸出程式):

#include <iostream>
#include <fstream>
#include <cstring> 
using namespace std;

int main() {
    ifstream myfile("12-3-4.cpp"); 
    int num = 0;
    string line;

    if (myfile.is_open()) {
        while (getline(myfile, line)) { 
            num++;
            if (line.substr(0, 2) != "//") { 
                cout << line << "\n"; 
            }
        }
        myfile.close();
    } else {
        cout << "Unable to open file.\n";
    }

    return 0;
}

說明:
這段程式碼讀取並顯示指定文件的內容,跳過所有以 // 開頭的註釋行。程式首先打開文件並逐行讀取,每行檢查是否以 // 開頭。若行不以 // 開頭,則顯示該行內容。程式結束後,關閉文件。如果文件無法打開,則輸出錯誤信息。

!!以上內容是跟著第一次學C++第二版第12章後半部一起學習的!!
今天想說要多練習這樣親手實作可能也會比較了解到底都卡在甚麼地方,途中還是一直跑不出來,像是檔案存放位子不對所以找不到東西。但之後我有看著書上的範例一步一步除錯,所以才能把程式做完!
未來幾天我可能是著重在程式編寫上,理論可能會占少部分。繼續加油囉


上一篇
Day 16 輸出入與檔案操作
下一篇
Day 18 動態記憶體
系列文
C++探險家30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言